The disclosure relates to analysis of instrumented software in general and more specifically to real-time processing of data streams received from instrumented software.
Software developers monitor different aspects of software they develop by instrumenting code. These include performance of the software, errors encountered during execution of the software, significant events encountered during execution of the software, parts of code that are being executed and parts that are not being executed, and so on. Conventional techniques for instrumenting code include statements in the code that log information to log files or print information on screens. This type of instrumentation is suitable for simple applications, for example, applications having a simple flow of execution on a single machine. However, these techniques for instrumenting software are inadequate for complex applications with complicated flow of execution, for example, applications that are distributed across multiple systems, each system executing multiple processes or threads of execution.
Processing data generated by instrumented software of a distributed system requires assimilating the data for analysis. Assimilating and processing data sent by instrumented software executing on distributed systems is complicated by the fact that data values sent by different systems at the same time can encounter different network delays and therefore take different amounts of time to reach the system assimilating the data even. Furthermore, one or more systems executing the instrumented software may fail. As a result, the system assimilating the data needs to determine whether a data value is late due to network delays or not likely to arrive due to failure of the data source. Making these determinations results in delays in processing the data values and/or inaccuracies in the results presented. Accordingly, conventional systems for generating reports based on instrumentation of software are often inadequate for analyzing highly distributed systems running instrumented software.